﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace GestorDeFlotasDesktop.Chofer_Auto
{
    public partial class buscadorChofer : Form
    {

        DataTable buscadorChoferes;
        public capaDatos.SQLSyntaxisGeneration buscadorCCD = new capaDatos.SQLSyntaxisGeneration();

        public buscadorChofer()
        {
            idChofer = 0;
            dniChofer = "";
            InitializeComponent();
            monthCalendar1.Visible = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string query = "select * from pelusa.chofer";

            if (dni.Text != "" || nombre.Text != "" || ape.Text != "" || telefono.Text != "" || direccion.Text != "" || mail.Text != ""||fecha.Text!="")
            {
                query += " where ";
                if (direccion.Text != "")
                {
                    query += "direccionChofer like '%" + direccion.Text + "%'";
                    if (nombre.Text != "")
                    {
                        query += " and nombreChofer like '%" + nombre.Text + "%'";


                    }
                    if (ape.Text != "")
                    {
                        query += " and apellidoChofer like '%" + ape.Text + "%'";

                    }
                    if (telefono.Text != "")
                    {
                        query += " and telefonochofer=" + telefono.Text;

                    }
                    if (dni.Text != "")
                    {
                        query += " and dnichofer=" + dni.Text;

                    }
                    if (mail.Text != "")
                    {
                        query += " and mailchofer like '%" + mail.Text + "%'";

                    }
                    if (fecha.Text != "")
                    {
                        query += " and fechanacimientochofer=" + fecha.Text;

                    }
                }
                else if (nombre.Text != "")
                {
                    query += "nombreChofer like '%" + nombre.Text + "%'";

                    if (ape.Text != "")
                    {
                        query += " and apellidoChofer like '%" + ape.Text + "%'";

                    }
                    if (telefono.Text != "")
                    {
                        query += " and telefonochofer=" + telefono.Text;

                    }
                    if (dni.Text != "")
                    {
                        query += " and dnichofer=" + dni.Text;

                    }
                    if (mail.Text != "")
                    {
                        query += " and mailchofer like '%" + mail.Text + "%'";

                    }
                    if (fecha.Text != "")
                    {
                        query += " and fechanacimientochofer=" + fecha.Text;

                    }
                }
                else if (ape.Text != "")
                {
                   
                    query += "apellidoChofer like '%" + ape.Text + "%'";

                    if (telefono.Text != "")
                    {
                        query += " and telefonochofer=" + telefono.Text;

                    }
                    if (dni.Text != "")
                    {
                        query += " and dnichofer=" + dni.Text;

                    }
                    if (mail.Text != "")
                    {
                        query += " and mailchofer like '%" + mail.Text + "%'";

                    }
                    if (fecha.Text != "")
                    {
                        query += " and fechanacimientochofer=" + fecha.Text;

                    }
                }
                else if (telefono.Text != "")
                {

                    query += "telefonochofer=" + telefono.Text;

                    if (dni.Text != "")
                    {
                        query += " and dnichofer=" + dni.Text;

                    }
                    if (mail.Text != "")
                    {
                        query += " and mailchofer like '%" + mail.Text + "%'";

                    }
                    if (fecha.Text != "")
                    {
                        query += " and fechanacimientochofer=" + fecha.Text;

                    }

                }
                else if(dni.Text != "")
                {
                    query += "dnichofer=" + dni.Text;
                   
                    if (mail.Text != "")
                    {
                        query += " and mailchofer like '%" + mail.Text + "%'";

                    }
                    if (fecha.Text != "")
                    {
                        query += " and fechanacimientochofer=" + fecha.Text;

                    }

                }
                else if (mail.Text != "")
                {

                    query += "mailchofer like '%" + mail.Text + "%'";
                    if (fecha.Text != "")
                    {
                        query += " and fechanacimientochofer=" + fecha.Text;

                    }
                }
                else {

                    query += "fechanacimientochofer=" + fecha.Text;
                
                }
                    



            }

            buscadorChoferes = buscadorCCD.executeQuery(query);
            this.dataGridView1.DataSource = buscadorChoferes;

        }

        private void dni_TextChanged(object sender, EventArgs e)
        {
            if (dni.Text != "")
            {
                int numero;
                bool resultado = int.TryParse(dni.Text, out numero);
                if (!resultado)
                { //si no consigue la conversión, valor inválido
                    dni.Text = "";
                    MessageBox.Show("Está ingresando un valor inválido. Este campo sólo admite valores numéricos", "buscador - Turnos", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }

        private void nombre_TextChanged(object sender, EventArgs e)
        {
            if (nombre.Text != "")
            {
                Regex expr_reg = new Regex(@"^([a-zA-Z]+)$");

                if (!expr_reg.IsMatch(nombre.Text))
                {
                    nombre.Text = "";
                    MessageBox.Show("Está ingresando un valor inválido. Este campo sólo admite letras", "buscador - Turnos", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }

        private void ape_TextChanged(object sender, EventArgs e)
        {
            if (ape.Text != "")
            {
                Regex expr_reg = new Regex(@"^([a-zA-Z]+)$");

                if (!expr_reg.IsMatch(ape.Text))
                {
                    ape.Text = "";
                    MessageBox.Show("Está ingresando un valor inválido. Este campo sólo admite letras", "buscador - Turnos", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }

        private void telefono_TextChanged(object sender, EventArgs e)
        {
            if (telefono.Text != "")
            {
                int numero;
                bool resultado = int.TryParse(telefono.Text, out numero);
                if (!resultado)
                { //si no consigue la conversión, valor inválido
                    telefono.Text = "";
                    MessageBox.Show("Está ingresando un valor inválido. Este campo sólo admite valores numéricos", "buscador - Turnos", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }

        }

        private void direccion_TextChanged(object sender, EventArgs e)
        {
            if (direccion.Text != "")
            {
                Regex expr_reg = new Regex(@"^([a-zA-Z0-9]|\s)+$");

                if (!expr_reg.IsMatch(direccion.Text))
                {
                    direccion.Text = "";
                    MessageBox.Show("Está ingresando un valor inválido.", "buscador - Turnos", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }

        private void mail_TextChanged(object sender, EventArgs e)
        {
            if (mail.Text != "")//no necesita ser el mail exacto porque busca con like pero sí no tener caracteres no válidos
            {
                Regex expr_reg = new Regex(@"^(([a-zA-Z0-9]|\-|\.|@)+)$");

                if (!expr_reg.IsMatch(mail.Text))
                {
                    mail.Text = "";
                    MessageBox.Show("Está ingresando un valor inválido.", "buscador - Turnos", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }

        private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (buscadorChoferes.Rows.Count > e.RowIndex && e.RowIndex>=0)
            {
                idChofer = Convert.ToInt32(buscadorChoferes.Rows[e.RowIndex].ItemArray[0]);
                dniChofer = Convert.ToString(buscadorChoferes.Rows[e.RowIndex].ItemArray[3]);
                this.Close();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (monthCalendar1.Visible)
            {
                monthCalendar1.Visible = false;
                fecha.Text=monthCalendar1.SelectionStart.ToShortDateString();
            }
            else
                monthCalendar1.Visible = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            fecha.Text = "";
            dni.Text = "";
            nombre.Text = ""; 
            ape.Text = ""; 
            telefono.Text = ""; 
            direccion.Text = "";
            mail.Text = "";
            
        }

        private void buscadorChofer_Load(object sender, EventArgs e)
        {

        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {

        }

      

       
    }
}
